'''
@Project ：my_python_project 
@File    ：json模块.py
@IDE     ：PyCharm 
@Author  ：xionglinhui
@Date    ：2024/9/9 上午8:32 
'''

#示范1
# import json
# '''序列化案例'''
# json_res = json.dumps([1, 'aaa',True,False,1.22])
# print(json_res, type(json_res))   # 打印：[1, "aaa", true, false, 1.22] <class 'str'>
#
# '''反序列化案例'''
# j = json.loads(json_res)
# print(j, type(j))      # 打印：[1, 'aaa', True, False, 1.22] <class 'list'>
#
# # 注意区分：json文件中的字符串是用双引号""表示

# import json
# # 序列化的结果写入文件的复杂方法
# lst = [1, "aaa", True, False, 1.22]
# json_res = json.dumps(lst)
# with open('test.json', mode='wt', encoding='utf-8') as f:
#     f.write(json_res)
#
# # 序列化的结果写入文件的简单方法
# with open('test1.json', mode='wt', encoding='utf-8') as f:
#     json.dump(lst, f)


import json

#前置条件：案例2中，test.json中内容为 [1, "aaa", true, false, 1.22]
# 从文件读取json格式的字符串进行反序列化操作的复杂方法
with open('test.json', mode='rt', encoding='utf-8') as f:
    json_res = f.read()
    res = json.loads(json_res)
    print(res,type(res))    #打印： [1, 'aaa', True, False, 1.22] <class 'list'>

# 从文件读取json格式的字符串进行反序列化操作的简单方法
with open('test.json', mode='rt', encoding='utf-8') as f1:
    res1 = json.load(f1)
    print(res1,type(res1))  #打印： [1, 'aaa', True, False, 1.22] <class 'list'>


import json
# dct1="{'1':111}"    # json 不认单引号
# dct2=str({"1":111})  #报错,因为生成的数据还是单引号:{'one': 1}
# print(dct2)  # {'1': 111}


dct3='{"1":"111"}'
print(json.loads(dct3))  # 打印：{'1': '111'}

#结论:
#        无论数据是怎样创建的，只要满足json格式，就可以json.loads出来,不一定非要dumps的数据才能loads


